package com.lagou.task10;

import java.util.Scanner;

/**
 * 1. 编程实现以下需求：
 * 定义一个长度为[16][16]的整型二维数组并输入或指定所有位置的元素值，分别实现二维数组中所有行和所有列中所有元素的累加和并打印。
 * 再分别实现二维数组中左上角到右下角和右上角到左下角所有元素的累加和并打印。
 */
public class Homework1 {

    //定义一个长度为[16][16]的二维数组
    private int[][] arr = new int[16][16];
    //为数组输入指定的元素
    public void show() {
        for(int i = 0; i<arr.length; i++){
            for(int j=0; j<arr[i].length; j++){
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }

    //给数组赋值
    public void setArr(int line,int row, int value){
        arr[line][row] = value;
    }

    //所有行中所有行元素的累加和并打印
    public void allLineSum() {
        for(int i=0; i<arr.length; i++){
            int sum = 0;
            for(int j = 0; j<arr[i].length; j++) {
                sum += arr[i][j];
            }
            System.out.println("第"+i+"行的所有元素和为" + sum);
        }
    }

    //分别实现二维数组中所有列的累加和并打印
    public void allRowSum() {
        int[] rowSun = new int[16];
        for(int i=0; i<arr.length; i++) {
            for(int j=0; j<arr[i].length; j++){
                rowSun[j] += arr[i][j];
            }
            System.out.println("第" + i + "列所有元素和为" + rowSun[i]);
        }
    }

    //实现二维数组右上角到左下角所有元素和的打印
    public void allRightupToLeftdownSum() {
        int sum =0;
        for (int i  = 0;   i< arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                if (i <= j) {
                    sum += arr[i][j];
                }
            }
        }
        System.out.println("右上角到左下角所有元素的累加和是:" + sum);
    }

    //实现二维数组左上角到右下角所有元素和的打印
    public void allLeftupToRightdownSum(){
        int sum=0;
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
                if(i>=j){
                    sum+=arr[i][j];
                }
            }
        }
        System.out.println("左上角到右下角所有元素的累加和是："+ sum);
    }




    public static void main(String[] args) {
        Homework1 hw = new Homework1();
        while(true){
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入二维数组行");
            int line = sc.nextInt();
            System.out.println("请输入二维数组列");
            int row = sc.nextInt();
            System.out.println("请输入设置的整数");
            int value = sc.nextInt();

            hw.setArr(line, row, value);
            hw.show();
            hw.allLineSum();
            hw.allRowSum();
            hw.allRightupToLeftdownSum();
            hw.allLeftupToRightdownSum();
        }
    }
}
